import Vue from 'vue'
import Vuex from 'vuex'
import api from '../util/api.js'

Vue.use(Vuex)

export default new Vuex.Store({
	state: {
		// 配置项 - 读取是否需要更新版本地址
		checkVersionUrl: 'http://121.36.61.27:8082/config.json',
		// 配置项 - iOS端APPID 用于跳转到App Store查看是否需要更新
		iOSAppID: '1053012308',
		
		// 存储用户信息
		userInfo: null,
		// 控制button loading开关
		btnLoading: false,
		
		// 资产列表
		assetsList: [],
		// 盘点上的数据
		checkList: [],

		// activeBtn
		activeBtn: true,

		// 存储设备信息
		moblieInfo: null,

		userinfo: null,
		
		userid: null,
		
		isSocketOpen: false, //socket是否打开
		
		pingTimes: null, //socket心跳计时器
		
		reConnectSocket: null, //重连socket
		
		recordOpen: false //记录app是否打开

	},
	
	// 调用：store.commit('saveUser', data)
	mutations: {
		// 保存用户信息
		saveUser(state, data) {
			state.userInfo = data;
			if (data != null) {
				// uni.setStorage({
				// 	key: 'USERINFO',
				// 	data: JSON.stringify(data)
				// })
			}
		},

    //重新获取信息
		setUserinfo(state, data) {
			state.userinfo = data;
		},
    //设置用户
    setUserid(state, data) {
			state.userid = data;
			console.log(state.userid);
		},
		//webSocket 是否打开
		isSocketOpen(state, data) {
			state.isSocketOpen = data;
		},
		//重新设置探测时间
		setPingTimes(state, data) {
			state.pingTimes = data;
		},
		//重链端口
		reConnectSocket(state, data) {
			state.reConnectSocket = data;
		},
		//重新获取信息
		recordOpen(state, data) {
			state.recordOpen = data;
		},
		
		// 更改button loading状态 data = true/false
		changeBtnLoading(state, data) {
			state.btnLoading = data;
		},
		
		// 存储设备信息
		saveMoblieInfo(state, data) {
			state.moblieInfo = data;
		}
	},
	
	// 调用：store.dispatch('scrollToTop')
	actions: {		
		// 页面滚动条复位0
		scrollToTop() {
			uni.pageScrollTo({ scrollTop: 0, duration: 100});
		},

		// 路由延迟跳转
		routerJumpDelay({commit,state}, url) {
			let pages = getCurrentPages();
			let page = pages[pages.length - 1];
			if (url) { // 返回指定页
				if (page.options.redirect == 'pages/user/center') {
					// 普通用户跳转
					uni.reLaunch({
						url: '/' + page.options.redirect
					})
				} else {
					uni.redirectTo({
						url: '/' + page.options.redirect
					})
				}
			} else { // 返回上一页
				uni.navigateBack({
					delta: 1
				});
			}
		},

		// 用户去登录
		toLogin({dispatch}) {
			uni.redirectTo({
				url: '/pages/login/login'
			})
		},
		
		// 用户退出登录
		loginOut() {
			let params = {
				token: uni.getStorageSync('token')
			}
			return api.loginOut(params)
				.then(res => {
					if (res.code == 200) {
						uni.removeStorageSync('TOKEN');
						uni.removeStorageSync('USER_ID');
						if (plus.os.name == 'Android') {
							this.$store.state.isSocketOpen = false;
							this.$keepAlive.stopKeepAlive();
						}
						return res;
					} else {
						uni.showToast({ title: res.msg, icon: 'none' });
						return res;
					}
				})
				.catch(err => console.error(err));
		},

		// 获取用户信息
		getUserInfo({
			commit
		}) {
			return api.getUserInfo({})
				.then(res => {
					if (res.code === 0) {
						commit('saveUser', res.data)
						return res;
					} else {
						return res;
					}
				})
				.catch(err => console.log(err));
		},
		
		// 消息跳转
		messageToPage({}, msg) {
			console.log(msg)
			let link = '';
			switch (msg.Type) {
				
				case 'FASG_NOTIFY_TYPE0001': //资产录入完成
				case 'FASG_NOTIFY_TYPE0001001': //资产编辑完成
				case 'FASG_NOTIFY_TYPE0003': //资产处置
				case 'FASG_NOTIFY_TYPE0003001': //资产处置-变卖（推送+站内）
				case 'FASG_NOTIFY_TYPE0003002': //资产处置-赠送（推送+站内）
				case 'FASG_NOTIFY_TYPE0003003': //资产处置-报废（推送+站内）
				case 'FASG_NOTIFY_TYPE0003004': //资产处置-丢失（推送+站内）
				case 'FASG_NOTIFY_TYPE0003005': //资产处置-其他（推送+站内）
				case 'FASG_NOTIFY_TYPE0003006001': //资产转移-开始（推送+站内）
				case 'FASG_NOTIFY_TYPE0003006004': //资产转移-取消转移（推送+站内）
					link = `/pages/user/record/detail?detailId=${msg.Guid}`; //操作记录页
					break;
					
				case 'FASG_NOTIFY_TYPE0003006': //资产处置-转移
				case 'FASG_NOTIFY_TYPE0003006002': //资产转移-带出（推送+站内）
					link = `/pages/manage/itemAssetTransfer?guid=${msg.Guid}&handleGuid=${msg.Guid}`; //转移详情页
					break;
					
				case 'FASG_NOTIFY_TYPE0003006003': //资产转移-转移完成（推送+站内）
					link = `/pages/manage/itemAssetDetail?id=${msg.Guid}`; //资产详情页
					break;
					
				case 'FASG_NOTIFY_TYPE0004': //盘点
				case 'FASG_NOTIFY_TYPE0004001': //盘点-有新的盘点报告（推送+站内）
					link = `/pages/report/report?reportId=${msg.Guid}`; //报告详情页
					break;
					
				case 'FASG_NOTIFY_TYPE0004002': //盘点-移入资产（推送+站内）
				case 'FASG_NOTIFY_TYPE0004003': //盘点-清除资产（推送+站内）
					break
					
				case 'FASG_NOTIFY_TYPE0005': //审核
				case 'FASG_NOTIFY_TYPE0005001': //待审核-资产处置-变卖（推送）
				case 'FASG_NOTIFY_TYPE0005002': //待审核-资产处置-赠送（推送）
				case 'FASG_NOTIFY_TYPE0005003': //待审核-资产处置-报废（推送）
				case 'FASG_NOTIFY_TYPE0005004': //待审核-资产处置-丢失（推送）
				case 'FASG_NOTIFY_TYPE0005005': //待审核-资产处置-其他（推送）
				case 'FASG_NOTIFY_TYPE0005006': //待审核-资产转移（推送）
					link = `/pages/examine/detail?hGuid=${msg.Guid}`; //待审核详情页
					break;
					
				case 'FASG_NOTIFY_TYPE0006': //报警
				case 'FASG_NOTIFY_TYPE0006001': //报警-非法带出（推送+站内）
				case 'FASG_NOTIFY_TYPE0006002': //报警-设备故障（推送+站内）
				case 'FASG_NOTIFY_TYPE0006003': //报警-转移超时（推送+站内）
					link = `/pages/alarm/detail?detailId=${msg.Guid}`; //报警详情页
					break;
					
				default:
					break;
			}
			
			link ? uni.navigateTo({ url: link }) : null;
			
		}
		
	}
})
